home *** CD-ROM | disk | FTP | other *** search
/ CD-ROM Today (Latin America) Volume 1 #6 / CD-ROM Today 6 Latam.iso / kids / timmy / setup.mst < prev    next >
Text File  |  1996-11-11  |  10KB  |  337 lines

  1. '**************************************************************************
  2. '*                       MSSetup Toolkit Sample 1
  3. '**************************************************************************
  4.  
  5. ''function GetCopyListCost(string1$,string2$,string3$) : longint
  6. ''function GetFreeSpaceForDrive(String$ - driveletter (no :))
  7. ''function GetProccessorTime : int (0-4)
  8. ''function GetWindowsMode : int (0-real,2-standard,3-enhanced)
  9. ''function GetWindowsMajorVersion : int
  10. ''Function GetWindowsMinorVersion : int
  11.  
  12. ''''$DEFINE DEBUG  ''Define for script development/debugging
  13.  
  14. '$INCLUDE 'setupapi.inc'
  15. '$INCLUDE 'msdetect.inc'
  16.  
  17. ''Dialog ID's
  18. CONST WELCOME       = 100
  19. CONST ASKQUIT       = 200
  20. CONST DESTPATH      = 300
  21. CONST EXITFAILURE   = 400
  22. CONST EXITQUIT      = 600
  23. CONST EXITSUCCESS   = 700
  24. CONST OPTIONS       = 800
  25. CONST APPHELP       = 900
  26. CONST BADPATH       = 6400
  27. CONST CBADFILE      = 7200
  28. CONST TOOBIG        = 6300
  29. ''Bitmap ID
  30. CONST LOGO = 1
  31.  
  32. GLOBAL DEST$        ''Default destination directory.
  33. GLOBAL OPTCUR$      ''Option selection from option dialog.
  34. GLOBAL UINT
  35. GLOBAL SrcDIR$
  36.  
  37. '$INCLUDE 'SPECS.INC'
  38.  
  39. DECLARE SUB Install
  40. DECLARE SUB NoSpace
  41. DECLARE FUNCTION WinExec LIB "KERNEL" (EXEC$, PARAM%) AS INTEGER
  42. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  43. DECLARE FUNCTION RestartWindows LIB "setuphlp.dll" AS INTEGER
  44. DECLARE FUNCTION VflatdPresent LIB "setuphlp.DLL" AS INTEGER
  45.  
  46. GLOBAL CUIDLL$
  47.  
  48. INIT:
  49.  
  50. '$IFDEF DEBUG
  51.     i%=DoMsgBox("Windows Version:"+Str$(GetWindowsMajorVersion)+"."+Str$(GetWindowsMinorVersion), "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  52.     i%=DoMsgBox("Kernel Version:"+Str$(GetVersion), "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  53.     i%=DoMsgBox(GetIniKeyString("system.ini", "keyboard", "seckbd.dll"), "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  54.     i%=DoMsgBox(GetIniKeyString("system.ini", "boot.description", "keyblang.dll"), "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  55.     i%=DoMsgBox(GetIniKeyString("system.ini", "boot.description", "language.dll"), "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  56.  
  57.  
  58. '$ENDIF ''DEBUG
  59.  
  60.  
  61. '    IF GetWindowsMajorVersion = 4 or (GetWindowsMajorVersion = 3 and GetWindowsMinorVersion = 95) THEN
  62. '    ELSE
  63. '      CreateProgmanGroup GROUPNAME$, ALTGROUPNAME$, "", cmoNone
  64. '    END IF
  65.  
  66.  
  67.     IF INSTR(1, UCASE$(GetIniKeyString("system.ini", "boot.description", "keyblang.dll")), "HEBREW") = 0 THEN
  68.       IF INSTR(1, UCASE$(GetIniKeyString("system.ini", "boot.description", "language.dll")), "HEBREW") = 0 THEN
  69.         IF UCASE$(GetIniKeyString("system.ini", "keyboard", "seckbd.dll")) <> "KBDHE.DLL" THEN
  70.           IF UCASE$(GetIniKeyString("win.ini", "intl", "scountry")) <> "ISRAEL" THEN
  71.             GROUPNAME$ = ALTGROUPNAME$
  72.           END IF
  73.         END IF
  74.       END IF
  75.     END IF
  76.  
  77.     GROUPNAME$ = ALTGROUPNAME$
  78.  
  79.     IF GROUPNAME$ = ALTGROUPNAME$ THEN
  80. ''    or GetWindowsMajorVersion = 4 or (GetWindowsMajorVersion = 3 and GetWindowsMinorVersion = 95) THEN
  81.       GROUPNAME$ = ALTGROUPNAME$
  82.       CUIDLL$ = "mscuiste.dll"
  83.       SetTitle ALTWINDOW_TITLE$
  84.     Else
  85.       CUIDLL$ = "mscuistf.dll"            ''Custom user interface dll
  86.       SetTitle WINDOW_TITLE$
  87.     END IF
  88.     
  89.  
  90.  
  91.     HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  92.  
  93.     SetBitmap CUIDLL$, LOGO
  94.  
  95.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  96.     IF szInf$ = "" THEN
  97.         szInf$ = GetSymbolValue("STF_CWDDIR") + INFFILE$
  98.     END IF
  99.     ReadInfFile szInf$
  100.  
  101.     OPTCUR$ = "1"
  102.     DEST$ = APPDESTDIR$
  103.  
  104. '$IFDEF DEBUG
  105.     i% = SetSizeCheckMode(scmOnIgnore)    '' could use scmOff; def = scmOnFatal
  106.     WinDrive$ = MID$(GetWindowsDir, 1, 1)
  107.     IF IsDriveValid(WinDrive$) = 0 THEN
  108.         i% = DoMsgBox("Windows drive ('"+WinDrive$+"') is not a valid drive.", "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  109.         GOTO QUIT
  110.     END IF
  111. '$ENDIF ''DEBUG
  112.  
  113.  
  114. WELCOME:
  115.     sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", APPHELP, HELPPROC$)
  116.     IF sz$ = "CONTINUE" THEN
  117.         UIPop 1
  118.     ELSE
  119.         GOSUB ASKQUIT
  120.         GOTO WELCOME
  121.     END IF
  122.  
  123.  
  124. 'OPTION:
  125. '    SetSymbolValue "RadioDefault", OPTCUR$
  126. 'OPTL1:
  127. '    sz$ = UIStartDlg(CUIDLL$, OPTIONS, "FRadioDlgProc", APPHELP, HELPPROC$)
  128. '    OPTCUR$ = GetSymbolValue("ButtonChecked")
  129.  
  130. '    IF sz$ = "CONTINUE" THEN
  131. '        UIPop(1)
  132. '    ELSEIF sz$ = "REACTIVATE" THEN
  133. '        GOTO OPTL1
  134. '    ELSE
  135. '        GOSUB ASKQUIT
  136. '        GOTO OPTION
  137. '    END IF
  138.  
  139.  
  140. GETPATH:
  141.     WinDrive$ = MID$(GetWindowsDir, 1, 3)
  142.     DEST$ = MakePath(WinDrive$, Dest$)
  143.     SetSymbolValue "EditTextIn", DEST$
  144.     SetSymbolValue "EditFocus", "END"
  145. GETPATHL1:
  146.     sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", APPHELP, HELPPROC$)
  147.     DEST$ = GetSymbolValue("EditTextOut")
  148.  
  149.     IF sz$ = "CONTINUE" THEN
  150.         IF IsDirWritable(DEST$) = 0 THEN
  151.             GOSUB BADPATH
  152.             GOTO GETPATHL1
  153.         END IF
  154.  
  155.         UIPop 1
  156.     ELSEIF sz$ = "REACTIVATE" THEN
  157.         GOTO GETPATHL1
  158.     ELSEIF sz$ = "BACK" THEN
  159.         UIPop 1
  160.         GOTO WELCOME ''OPTION
  161.     ELSE
  162.         GOSUB ASKQUIT
  163.         GOTO GETPATH
  164.     END IF
  165.  
  166.  
  167.     Install
  168.  
  169.  
  170. QUIT:
  171.     ON ERROR GOTO ERRQUIT
  172.  
  173.     IF ERR = 0 THEN
  174.         dlg% = EXITSUCCESS
  175.  
  176.     ELSEIF ERR = STFQUIT THEN
  177.         dlg% = EXITQUIT
  178.     ELSE
  179.         dlg% = EXITFAILURE
  180.     END IF
  181. QUITL1:
  182.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  183.     IF sz$ = "REACTIVATE" THEN
  184.         GOTO QUITL1
  185.     END IF
  186.     UIPop 1
  187.  
  188.     IF dlg% = EXITSUCCESS THEN
  189.      UINT = WinExec(MakePath(SrcDir$,"Launch.EXE")+" "+MakePath(SrcDir$,"Launch.INI"), 1)
  190.     ENDIF
  191.     END
  192.  
  193. ERRQUIT:
  194.     i% = DoMsgBox("Setup sources were corrupted!", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  195.     END
  196.  
  197.  
  198.  
  199. BADPATH:
  200.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  201.     IF sz$ = "REACTIVATE" THEN
  202.         GOTO BADPATH
  203.     END IF
  204.     UIPop 1
  205.     RETURN
  206.  
  207.  
  208.  
  209. ASKQUIT:
  210.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  211.  
  212.     IF sz$ = "EXIT" THEN
  213.         UIPopAll
  214.         ERROR STFQUIT
  215.     ELSEIF sz$ = "REACTIVATE" THEN
  216.         GOTO ASKQUIT
  217.     ELSE
  218.         UIPop 1
  219.     END IF
  220.     RETURN
  221.  
  222.  
  223.  
  224. '**
  225. '** Purpose:
  226. '**     Builds the copy list and performs all installation operations.
  227. '** Arguments:
  228. '**     none.
  229. '** Returns:
  230. '**     none.
  231. '*************************************************************************
  232. SUB NoSpace STATIC
  233.     sz$ = UIStartDlg(CUIDLL$, TOOBIG, "FInfoDlgProc", 0, "")
  234.     UIPop 1
  235.     ERR=STFQUIT+1
  236.     RETURN
  237. END SUB
  238.  
  239. SUB Install STATIC
  240. '    LocalDir$ = GetSymbolValue("STF_SRCDIR")
  241.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  242.     SysDir$ = GetWindowsSysDir
  243.     bInstallDVA% = 0 
  244.     
  245.     CreateDir DEST$, cmoNone
  246.  
  247.     ClearCopyList
  248.       
  249.       SetRestartDir(DEST$)
  250.  
  251.     AddSectionFilesToCopyList "Files", SrcDir$, DEST$
  252. '    AddSectionFilesToCopyList "Music", SrcDir$, DEST$
  253.  
  254.     AddSectionFilesToCopyList "WinG", SrcDir$, SysDir$
  255.     AddSectionFilesToCopyList "VxD", SrcDir$, SysDir$
  256. '    AddSectionKeyFileToCopyList "Options", OPTCUR$, SrcDir$, DEST$
  257.     
  258.  
  259.     IF GetCopyListCost("",Drv2$,Drv3$) <> 0 THEN
  260.       NOSPACE
  261.     ENDIF
  262.  
  263.     CopyFilesInCopyList
  264.  
  265. '    IF GetWindowsMajorVersion = 4 THEN
  266. '      GROUPNAME$ = ALTGROUPNAME$
  267. '    END IF
  268.     
  269.     CreateProgmanGroup GROUPNAME$, ALTGROUPNAME$, "", cmoNone
  270.     ShowProgmanGroup   GROUPNAME$, 1, cmoNone
  271.  
  272.     IF GetWindowsMajorVersion = 4 or (GetWindowsMajorVersion = 3 and GetWindowsMinorVersion = 95) THEN
  273.     ELSE  
  274.       IF VflatdPresent()=0 then
  275.         CreateSysIniKeyValue GetWindowsDir + "system.ini", "386Enh", "device", GetWindowsSysDir+"dva.386", cmoOverwrite
  276.         bInstallDVA% = 1
  277.       END IF
  278.     END IF
  279.  
  280. '    CreateIniKeyValue MakePath(Dest$, CFGF$), "ENG", "PicFile", MakePath(Dest$, GetIniKeyString(MakePath(Dest$, CFGF$), "ENG", "PicFile")), cmoOverWrite
  281. '    CreateIniKeyValue MakePath(Dest$, CFGF$), "ENG", "ofsFile", MakePath(Dest$, GetIniKeyString(MakePath(Dest$, CFGF$), "ENG", "ofsFile")), cmoOverWrite
  282.     
  283.     CreateIniKeyValue MakePath(Dest$, CFGF$), "GLOBALS", "SaveDir", Dest$, cmoOverWrite
  284.     
  285.     IF ICONFILE$ = "" THEN
  286.     ELSE
  287.       ICONFILE$ = makePath(SrcDir$, ICONFILE$)
  288.     END IF
  289.  
  290.     CreateProgmanItem GROUPNAME$, ALTGROUPNAME$, PROGRAMTITLE$, ALTPROGRAMTITLE$,MakePath(DEST$,EXEF$+" ")+"emme /CFG:"+makePath(DEST$,CFGF$), ICONFILE$+",,,,"+SrcDir$, cmoOverwrite
  291.     CreateIniKeyValue MakePath(GetWindowsDir,"compedia.ini"), "GAMES", GetIniKeyString(MakePath(SrcDir$, "launch.ini"), "GLOBAL", "GAMENAME") , MakePath(DEST$,EXEF$+" ")+"emme /CFG:"+makePath(DEST$,CFGF$)+ " /startdir:"+SrcDir$, cmoOverWrite
  292.  
  293.     IF GROUPNAME$ = ALTGROUPNAME$ THEN
  294. '      CreateIniKeyValue MakePath(Dest$, CFGF$), "GLOBALS", "Languages", "ENG FRE HEB", cmoOverWrite
  295.     END IF
  296.  
  297. '    CUIDLL$ = "mscuistf.dll"
  298.     '' invoke the 'Restart Windows?' dialog
  299.     if bInstallDVA% = 1 then
  300.         sz$ = UIStartDlg(CUIDLL$, 7200, "FInfoDlgProc", APPHELP, HELPPROC$)
  301.         UIPop 1
  302.         IF sz$ = "CONTINUE" THEN
  303.             rc% = RestartWindows
  304.         ENDIF
  305.     endif
  306.  
  307.     RemoveFile MakePath(DEST$,"_mssetup.exe"),cmoForce
  308.     RemoveFile MakePath(DEST$,"_mssetup.bat"),cmoForce
  309.     RemoveFile MakePath(DEST$,"_msrstrt.exe"),cmoForce
  310.  
  311. END SUB
  312.  
  313.     
  314.  
  315. '**
  316. '** Purpose:
  317. '**     Appends a file name to the end of a directory path,
  318. '**     inserting a backslash character as needed.
  319. '** Arguments:
  320. '**     szDir$  - full directory path (with optional ending "\")
  321. '**     szFile$ - filename to append to directory
  322. '** Returns:
  323. '**     Resulting fully qualified path name.
  324. '*************************************************************************
  325. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  326.     IF szDir$ = "" THEN
  327.         MakePath = szFile$
  328.     ELSEIF szFile$ = "" THEN
  329.         MakePath = szDir$
  330.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  331.         MakePath = szDir$ + szFile$
  332.     ELSE
  333.         MakePath = szDir$ + "\" + szFile$
  334.     END IF
  335. END FUNCTION
  336.  
  337.